

self.addEventListener('install',function(event){
    event.waitUntil(
        caches.open('v1').then(cache=>{
            return cache.addAll([
                '/tuiguangma/',
                'https://cdn.staticfile.org/element-ui/2.4.9/theme-chalk/index.css',
                'https://cdn.staticfile.org/mint-ui/2.2.13/style.min.css',
                'https://cdn.bootcss.com/zepto/1.2.0/zepto.js',
                'https://cdn.bootcss.com/babel-polyfill/7.0.0-rc.4/polyfill.min.js',
                'https://cdn.bootcss.com/clipboard.js/2.0.1/clipboard.min.js',
                'https://cdn.bootcss.com/vue/2.5.17/vue.js',
                'https://cdn.bootcss.com/vuex/3.0.1/vuex.js',
                'https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js',
                'https://cdn.staticfile.org/element-ui/2.4.9/index.js',
                'https://cdn.staticfile.org/mint-ui/2.2.13/index.js'
            ])
        })
    )
})

self.addEventListener('fetch', function (event) {
    event.respondWith(
        caches.match(event.request).then(function (response) {
            // 来来来，代理可以搞一些代理的事情

            // 如果 Service Worker 有自己的返回，就直接返回，减少一次 http 请求
            if (response) {
                return response
            }

            // 如果 service worker 没有返回，那就得直接请求真实远程服务
            var request = event.request.clone() // 把原始请求拷过来
            return fetch(request).then(function (httpRes) {

                // http请求的返回已被抓到，可以处置了。

                // 请求失败了，直接返回失败的结果就好了。。
                if (!httpRes || httpRes.status !== 200) {
                    return httpRes
                }
                // 请求成功的话，将请求缓存起来。
                var responseClone = httpRes.clone()
                caches.open('v1').then(function (cache) {
                    if(event.request.method!='POST')cache.put(event.request, responseClone)
                });

                return httpRes
            });
        })
    );
});